/*
 * 教材中的示例程序之完整版.
 * 书名：《编译原理基础》
 * 版次：第三版
 * 作者：王献青，张立勇，张淑平，刘坚
 * 出版社：西安电子科技大学出版社
 * 程序完成时间：2025.03
 */

/*
 * 文件内容：教材中的程序清单3.3, 非互斥的多重入口演示，
 * 即【例3.40】。
 */

%{
%}

%start AA BB CC

%%
^a          { ECHO; BEGIN AA; }
^b          { ECHO; BEGIN BB; }
^c          { ECHO; BEGIN CC; }
<AA>magic   { printf ("first"); }
<BB>magic   { printf ("second"); }
<CC>magic   { printf ("third"); }
magic       { printf ("zero"); }
\n|.        { ECHO; BEGIN 0; }

%%

int main() {
   yylex();
   return 0;
}

int yywrap() { return 1; }

/*
== input:
amagic magic
magic magic
bmagic	magic
cmagic		magic

== output:
afirst zero
afirst first
zero zero
bsecond	first
cthird		zero

*/
